home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / vbrasa / vbrasapi.bas < prev   
BASIC Source File  |  1995-01-10  |  24KB  |  576 lines

  1. 'Description
  2.     'This module provides a simple RAS API to VB applications, based on RASAPI16.DLL.
  3.     'All subs beginning with VBRAS may be used externally.
  4.     'VBRAS_DIAL_INFO_TYPE is the only type to be used externally.
  5.     '
  6.     'Written by Adam Ziegler CIS:72147,2221
  7.  
  8. 'Clean Living <g>
  9. Option Explicit
  10.  
  11. Const mnVBRAS_MAX_CONNECTIONS = 3 'Max connections VBRAS should support
  12.  
  13. 'For use with VBRASDial
  14. Type VBRAS_DIAL_INFO_TYPE
  15.     PhoneBook As String         'full path, defaults to standard if = ""
  16.     entryname As String         'entry to dial. If = "", phone number must be provided
  17.     Username As String          'username for auth. If "" will attempt to use logged-on user
  18.     Password As String          'if blank, will prompt
  19.     Domain As String            'Domain for auth. If "" will use from phonebook, if * will use from server
  20.     PhoneNumber As String       'Will override phonebook entry
  21.     CallbackNumber As String    'Only valid if server set up for user-specified callback
  22. End Type
  23.  
  24. 'Original User Information Length Constants
  25. Const UNLEN = 20    'Username
  26. Const PWLEN = 14    'Password
  27. Const DNLEN = 15    'Domain
  28. Const UNLENPlus1 = UNLEN + 1
  29. Const PWLENPlus1 = PWLEN + 1
  30. Const DNLENPlus1 = DNLEN + 1
  31.  
  32. 'Original RASAPI16.DLL Constants
  33. Const RASCS_DONE = &H2000
  34. Const RASCS_PAUSED = &H1000
  35. Const RAS_MaxCallbackNumber = 48
  36. Const RAS_MaxDeviceName = 32
  37. Const RAS_MaxDeviceType = 16
  38. Const RAS_MaxEntryName = 20
  39. Const RAS_MaxParamKey = 32
  40. Const RAS_MaxParamValue = 128
  41. Const RAS_MaxPhoneNumber = 128
  42.  
  43. Const RAS_MaxCallbackNumberPlus1 = RAS_MaxCallbackNumber + 1
  44. Const RAS_MaxDeviceNamePlus1 = RAS_MaxDeviceName + 1
  45. Const RAS_MaxDeviceTypePlus1 = RAS_MaxDeviceType + 1
  46. Const RAS_MaxEntryNamePlus1 = RAS_MaxEntryName + 1
  47. Const RAS_MaxParamKeyPlus1 = RAS_MaxParamKey + 1
  48. Const RAS_MaxParamValuePlus1 = RAS_MaxParamValue + 1
  49. Const RAS_MaxPhoneNumberPlus1 = RAS_MaxPhoneNumber + 1
  50.  
  51. 'Declare RASAPI16.DLL Structures
  52. Type RASCONN
  53.     dwSize As Long                              ' Size in bytes of RASCONN Structure (30)
  54.     hrasconn As Long                            ' handle to connection
  55.     szEntryName As String * RAS_MaxEntryNamePlus1  'name or "" followed by phone #
  56.     szFiller As String * 1                      'must end on word (2-byte) boundary
  57. End Type
  58.  
  59. 'Equiv of _RASCONNSTATE enumerated type
  60.     Global Const RAS_OpenPort = 0
  61.     Global Const RAS_PortOpened = 1
  62.     Global Const RAS_ConnectDevice = 2
  63.     Global Const RAS_DeviceConnected = 3
  64.     Global Const RAS_AllDevicesConnected = 4
  65.     Global Const RAS_Authenticate = 5
  66.     Global Const RAS_AuthNotify = 6
  67.     Global Const RAS_AuthRetry = 7
  68.     Global Const RAS_AuthCallback = 8
  69.     Global Const RAS_AuthChangePassword = 9
  70.     Global Const RAS_AuthProject = 10
  71.     Global Const RAS_AuthLinkSpeed = 11
  72.     Global Const RAS_AuthAck = 12
  73.     Global Const RAS_ReAuthenticate = 13
  74.     Global Const RAS_Authenticated = 14
  75.     Global Const RAS_PrepareForCallback = 15
  76.     Global Const RAS_WaitForModemReset = 16
  77.     Global Const RAS_WaitForCallback = 17
  78.     Global Const RAS_Interactive = RASCS_PAUSED
  79.     Global Const RAS_RetryAuthentication = RASCS_PAUSED + 1
  80.     Global Const RAS_CallbackSetByCaller = RASCS_PAUSED + 2
  81.     Global Const RAS_PasswordExpired = RASCS_PAUSED + 3
  82.     Global Const RAS_Connected = RASCS_DONE
  83.     Global Const RAS_Disconnected = RASCS_DONE + 1
  84. 'End _RASCONNSTATE declarations
  85.  
  86. Type RASCONNSTATUS
  87.     dwSize As Long              ' size of struct in bytes (60)
  88.     rasconnstate As Integer     ' one of RASCONNSTATE enum types
  89.     dwError As Long             ' reason for fail if non-zero
  90.     szDeviceType    As String * RAS_MaxDeviceTypePlus1  'current dev type
  91.     szDevicename    As String * RAS_MaxDeviceNamePlus1  'current dev name
  92. End Type
  93.  
  94. Type RASDIALPARAMS
  95.     dwSize As Long  ' size of struct (256, calculates to 255)
  96.     szEntryName As String * RAS_MaxEntryNamePlus1
  97.     szPhoneNumber As String * RAS_MaxPhoneNumberPlus1
  98.     szCallbackNumber As String * RAS_MaxCallbackNumberPlus1
  99.     szUserName As String * UNLENPlus1
  100.     szPassword As String * PWLENPlus1
  101.     szDomain As String * DNLENPlus1
  102.     szFiller As String * 1
  103. End Type
  104.  
  105. Type RASENTRYNAME
  106.    dwSize As Long   ' size of struct (26)
  107.    szEntryName As String * RAS_MaxEntryNamePlus1
  108.    szFiller As String * 1
  109. End Type
  110.  
  111. 'Declare RASAPI16.DLL external functions
  112. Declare Function RASDIAL& Lib "RASAPI16.DLL" (reserved As Any, lpszPhonebookPath As Any, lprasdialparams As RASDIALPARAMS, reserved2 As Any, ByVal hwndNotifier As Integer, lphrasconn As Long)
  113.     'LPTSTR             reserved;           /* reserved; must be set to NULL*/
  114.     'LPTSTR             lpszPhonebookPath;  /* full pathname to Phone Book file*/
  115.     'LPRASDIALPARAMS    lpRasDialParams;    /* points to calling parameters*/
  116.     'LPVOID             reserved2;          /* reserved; must be set to NULL*/
  117.     'HWND               hwndNotifier;       /* notification message for RasDial events*/
  118.     'LPHRASCONN         lphrasconn;         /* points to variable to receive connection handle*/
  119.  
  120. Declare Function RasEnumConnections& Lib "RASAPI16.DLL" (lprasconn As RASCONN, lpcb&, lpcConnections&)
  121.     'LPRASCONN          lprasconn;          /* buffer to receive connections data */
  122.     'LPDWORD            lpcb;               /* size in bytes of buffer */
  123.     'LPDWORD            lpcConnections;     /* number of connections written to buffer */
  124.  
  125. 'Following function is not currently used by RASAPIVB
  126. 'Declare Function RasEnumEntries& Lib "RASAPI16.DLL" (reserved As Any, lpszPhonebookPath As Any, lprasentryname As RASENTRYNAME, lpcb As Long, lpcEntries As Long)
  127.     'LPTSTR             reserved;           /* reserved; must be NULL */
  128.     'LPTSTR             lpszPhonebookPath;  /* full path to Phone Book file */
  129.     'LPRASENTRYNAME     lprasentryname;     /* buffer to receive Phone Book entries */
  130.     'LPDWORD            lpcb;               /* size in bytes of buffer */
  131.     'LPDWORD            lpcEntries;         /* number of entries written to buffer */
  132.  
  133. Declare Function RasGetConnectStatus& Lib "RASAPI16.DLL" (ByVal hrasconn&, lprasconnstatus As RASCONNSTATUS)
  134.     'HRASCONN           hrasconn;           /* handle to Remote Access connection of interest */
  135.     'LPRASCONNSTATUS    lprasconnstatus;    /* buffer to receive status data */
  136.  
  137.  
  138. Declare Function RasGetErrorString& Lib "RASAPI16.DLL" (ByVal uErrorCode%, ByVal lpszErrorString$, ByVal cBufSize&)
  139.     'UINT               uErrorCode;         /* error code to get string for */
  140.     'LPSTR              lpszErrorString;    /* buffer to hold error string */
  141.     'DWORD              cBufSize;           /* sizeof buffer */
  142.  
  143. Declare Function RASHangUp& Lib "RASAPI16.DLL" (ByVal hrasconn As Long)
  144.     'HRASCONN           hrasconn;           /* handle to the Remote Access connection to hang up */
  145.  
  146.  
  147. 'Function needed to trap messages with MessageBlaster VBX
  148. Declare Function RegisterWindowMessage% Lib "user" (ByVal lpszMessage As String)
  149.  
  150. 'Error contants from RASERROR.H
  151. Global Const ERROR_INVALID_HANDLE = 6
  152. Global Const ERROR_NOT_ENOUGH_MEMORY = 8
  153. Global Const RASBASE = 600
  154. Global Const SUCCESS = 0
  155. Global Const PENDING = (RASBASE + 0)
  156. Global Const ERROR_INVALID_PORT_HANDLE = (RASBASE + 1)
  157. Global Const ERROR_PORT_ALREADY_OPEN = (RASBASE + 2)
  158. Global Const ERROR_BUFFER_TOO_SMALL = (RASBASE + 3)
  159. Global Const ERROR_WRONG_INFO_SPECIFIED = (RASBASE + 4)
  160. Global Const ERROR_CANNOT_SET_PORT_INFO = (RASBASE + 5)
  161. Global Const ERROR_PORT_NOT_CONNECTED = (RASBASE + 6)
  162. Global Const ERROR_EVENT_INVALID = (RASBASE + 7)
  163. Global Const ERROR_DEVICE_DOES_NOT_EXIST = (RASBASE + 8)
  164. Global Const ERROR_DEVICETYPE_DOES_NOT_EXIST = (RASBASE + 9)
  165. Global Const ERROR_INVALID_BUFFER = (RASBASE + 10)
  166. Global Const ERROR_ROUTE_NOT_AVAILABLE = (RASBASE + 11)
  167. Global Const ERROR_ROUTE_NOT_ALLOCATED = (RASBASE + 12)
  168. Global Const ERROR_INVALID_COMPRESSION_SPECIFIED = (RASBASE + 13)
  169. Global Const ERROR_OUT_OF_BUFFERS = (RASBASE + 14)
  170. Global Const ERROR_PORT_NOT_FOUND = (RASBASE + 15)
  171. Global Const ERROR_ASYNC_REQUEST_PENDING = (RASBASE + 16)